package com.ruoyi.mapper;

import com.ruoyi.order.domain.VerCoupon;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface VerCouponsMapper {
    /**
     * 根据优惠券码查询优惠券
     * @param code
     * @return
     */
    VerCoupon selectByCode(String code);

    /**
     * 根据ID查询优惠券
     */
    VerCoupon selectById(@Param("id") Long id);

    /**
     * 根据IDs批量查询优惠券
     */
    List<VerCoupon> selectByIds(@Param("ids") List<Long> ids);

    /**
     * 根据优惠券组ID查询
     */
    List<VerCoupon> selectByGroupId(@Param("groupId") Long groupId);

    /**
     * 查询所有优惠券
     */
    List<VerCoupon> selectAvailableCoupons(VerCoupon verCoupon);

    /**
     * 新增优惠券
     */
    int insert(VerCoupon coupon);

    /**
     * 更新优惠券
     */
    int update(VerCoupon coupon);

    /**
     * 更新优惠券状态
     */
    int updateStatus(@Param("id") Long id, @Param("status") Integer status);

    /**
     * 扣减库存
     */
    int decreaseStock(@Param("id") Long id);

    /**
     * 恢复库存
     */
    int increaseStock(@Param("id") Long id);

    /**
     * 逻辑删除优惠券
     */
    int deleteById(@Param("id") Long id);

    /**
     * 查询已过期的优惠券
     */
    List<VerCoupon> selectExpiredCoupons(@Param("now") Date now);
}
